fix to properly replace selection with Return or Tab
authorHavoc Pennington <hp@redhat.com>
Tue, 13 Nov 2001 23:56:11 +0000 (23:56 +0000)
committerHavoc Pennington <hp@src.gnome.org>
Tue, 13 Nov 2001 23:56:11 +0000 (23:56 +0000)
2001-11-13  Havoc Pennington  <hp@redhat.com>

* gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
properly replace selection with Return or Tab

* gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
that didn't locate the end of the line correctly, should fix #63800

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktextdisplay.c
gtk/gtktextview.c

index d6d4973582d6388c545ebadc01c75eb660c58627..3171ae2bb4dfe694459a2a070c1e0eef3ce925e8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-11-13  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
+       properly replace selection with Return or Tab
+
+       * gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
+       that didn't locate the end of the line correctly, should fix #63800
+
 2001-11-13  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_size_request): add border width
index d6d4973582d6388c545ebadc01c75eb660c58627..3171ae2bb4dfe694459a2a070c1e0eef3ce925e8 100644 (file)
@@ -1,3 +1,11 @@
+2001-11-13  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
+       properly replace selection with Return or Tab
+
+       * gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
+       that didn't locate the end of the line correctly, should fix #63800
+
 2001-11-13  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_size_request): add border width
index d6d4973582d6388c545ebadc01c75eb660c58627..3171ae2bb4dfe694459a2a070c1e0eef3ce925e8 100644 (file)
@@ -1,3 +1,11 @@
+2001-11-13  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
+       properly replace selection with Return or Tab
+
+       * gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
+       that didn't locate the end of the line correctly, should fix #63800
+
 2001-11-13  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_size_request): add border width
index d6d4973582d6388c545ebadc01c75eb660c58627..3171ae2bb4dfe694459a2a070c1e0eef3ce925e8 100644 (file)
@@ -1,3 +1,11 @@
+2001-11-13  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
+       properly replace selection with Return or Tab
+
+       * gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
+       that didn't locate the end of the line correctly, should fix #63800
+
 2001-11-13  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_size_request): add border width
index d6d4973582d6388c545ebadc01c75eb660c58627..3171ae2bb4dfe694459a2a070c1e0eef3ce925e8 100644 (file)
@@ -1,3 +1,11 @@
+2001-11-13  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
+       properly replace selection with Return or Tab
+
+       * gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
+       that didn't locate the end of the line correctly, should fix #63800
+
 2001-11-13  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_size_request): add border width
index d6d4973582d6388c545ebadc01c75eb660c58627..3171ae2bb4dfe694459a2a070c1e0eef3ce925e8 100644 (file)
@@ -1,3 +1,11 @@
+2001-11-13  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
+       properly replace selection with Return or Tab
+
+       * gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
+       that didn't locate the end of the line correctly, should fix #63800
+
 2001-11-13  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_size_request): add border width
index d6d4973582d6388c545ebadc01c75eb660c58627..3171ae2bb4dfe694459a2a070c1e0eef3ce925e8 100644 (file)
@@ -1,3 +1,11 @@
+2001-11-13  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c (gtk_text_view_key_press_event): fix to
+       properly replace selection with Return or Tab
+
+       * gtk/gtktextdisplay.c (gtk_text_layout_draw): fix broken code
+       that didn't locate the end of the line correctly, should fix #63800
+
 2001-11-13  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_size_request): add border width
index 1d53096a42119ff2c9686969d9cf6adf68279443..fd5a9d137e27921337a8a9eb44ee492ba5a7dcf4 100644 (file)
@@ -785,12 +785,9 @@ gtk_text_layout_draw (GtkTextLayout *layout,
               gtk_text_layout_get_iter_at_line (layout,
                                                 &line_start,
                                                 line, 0);
-              byte_count = gtk_text_iter_get_bytes_in_line (&line_start);
-          
-              /* FIXME the -1 assumes a newline I think */
-              gtk_text_layout_get_iter_at_line (layout,
-                                                &line_end,
-                                                line, byte_count - 1);
+              line_end = line_start;
+              gtk_text_iter_forward_to_line_end (&line_end);
+              byte_count = gtk_text_iter_get_line_index (&line_end);     
 
               if (gtk_text_iter_compare (&selection_start, &line_end) <= 0 &&
                   gtk_text_iter_compare (&selection_end, &line_start) >= 0)
index 95834e9fae99b4759c8d811e515e4585d27fe29d..25b5e0c5d181fb6d124a96a0790a6adec0e4683b 100644 (file)
@@ -262,6 +262,8 @@ static void     gtk_text_view_value_changed                (GtkAdjustment *adj,
 static void     gtk_text_view_commit_handler               (GtkIMContext  *context,
                                                            const gchar   *str,
                                                            GtkTextView   *text_view);
+static void     gtk_text_view_commit_text                  (GtkTextView   *text_view,
+                                                            const gchar   *text);
 static void     gtk_text_view_preedit_changed_handler      (GtkIMContext  *context,
                                                            GtkTextView   *text_view);
 static gboolean gtk_text_view_retrieve_surrounding_handler (GtkIMContext  *context,
@@ -3377,13 +3379,7 @@ gtk_text_view_key_press_event (GtkWidget *widget, GdkEventKey *event)
   else if (event->keyval == GDK_Return ||
            event->keyval == GDK_KP_Enter)
     {
-      gtk_text_buffer_insert_interactive_at_cursor (get_buffer (text_view), "\n", 1,
-                                                    text_view->editable);
-      DV(g_print (G_STRLOC": scrolling to mark\n"));
-      gtk_text_view_scroll_to_mark (text_view,
-                                    gtk_text_buffer_get_mark (get_buffer (text_view),
-                                                              "insert"),
-                                    0.0, FALSE, 0.0, 0.0);
+      gtk_text_view_commit_text (text_view, "\n");
       retval = TRUE;
     }
   /* Pass through Tab as literal tab, unless Control is held down */
@@ -3392,12 +3388,7 @@ gtk_text_view_key_press_event (GtkWidget *widget, GdkEventKey *event)
             event->keyval == GDK_ISO_Left_Tab) &&
            !(event->state & GDK_CONTROL_MASK))
     {
-      gtk_text_buffer_insert_interactive_at_cursor (get_buffer (text_view), "\t", 1,
-                                                    text_view->editable);
-      DV(g_print (G_STRLOC": scrolling onscreen\n"));
-      gtk_text_view_scroll_mark_onscreen (text_view,
-                                          gtk_text_buffer_get_mark (get_buffer (text_view),
-                                                                    "insert"));
+      gtk_text_view_commit_text (text_view, "\t");
       retval = TRUE;
     }
   else
@@ -5385,6 +5376,13 @@ static void
 gtk_text_view_commit_handler (GtkIMContext  *context,
                               const gchar   *str,
                               GtkTextView   *text_view)
+{
+  gtk_text_view_commit_text (text_view, str);
+}
+
+static void
+gtk_text_view_commit_text (GtkTextView   *text_view,
+                           const gchar   *str)
 {
   gboolean had_selection;